package com.banyou.banyou.main.list;

import com.banyou.banyou.base.BaseModel;
import com.banyou.banyou.base.BasePresenter;
import com.banyou.banyou.bean.journey.JourneyBean;
import com.banyou.banyou.bean.journey.query.QueryParamBean;
import com.banyou.banyou.bean.journey.query.TourBean;
import com.banyou.banyou.webutils.RetrofitHelp;
import com.banyou.banyou.webutils.SubscriberOnErrorListener;
import com.banyou.banyou.webutils.SubscriberOnNextListener;

import java.util.List;
import java.util.Map;

/**
 * ----------Dragon be here!----------/
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃神兽保佑
 * 　　　　┃　　　┃代码无BUG！
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━神兽出没━━━━━━
 * 类描述：
 * 创建人：Random
 * 修改时间：
 * 修改备注：
 */

public class ListPresenter extends BasePresenter<ListFragment, ListModel> implements ListContract.Presenter {
    /**
     * 查询行程单
     * @param map
     */
    @Override
    public void queryOrder(Map<String, String> map) {
        SubscriberOnNextListener<List<JourneyBean>> onNext=new SubscriberOnNextListener<List<JourneyBean>>() {
            @Override
            public void onNext(List<JourneyBean> o) {
                if(mView!=null){
                    mView.queryOrderSuccess(o);
                    mView.mSwpieRefresh.setRefreshing(false);

                }
            }
        };
        SubscriberOnErrorListener onError=new SubscriberOnErrorListener() {
            @Override
            public void onError(Throwable e) {
                if(mView!=null){
                    mView.requestFail(e,"查询行程单失败");
                    mView.mSwpieRefresh.setRefreshing(false);
                }
            }

            @Override
            public void onError() {

            }
        };
        mModel.setListener(onNext,onError,mView.getActivity());
        mModel.queryOrder(map);
    }

    /**
     * 伴游按日期查询行程单
     * @param map
     */
    @Override
    public void queryOrderByTime(Map<String, String> map) {
        SubscriberOnNextListener<List<TourBean>> onNext=new SubscriberOnNextListener<List<TourBean>>() {
            @Override
            public void onNext(List<TourBean> o) {
                if(mView!=null){
                    mView.queryOrderByTimeSuccess(o);
                    mView.mSwpieRefresh.setRefreshing(false);

                }
            }
        };
        SubscriberOnErrorListener onError=new SubscriberOnErrorListener() {
            @Override
            public void onError(Throwable e) {
                if(mView!=null){
                    mView.requestFail(e,"查询行程单失败");
                    mView.mSwpieRefresh.setRefreshing(false);
                }
            }

            @Override
            public void onError() {

            }
        };
        mModel.setQueryTimeListener(onNext,onError,mView.getActivity());
        mModel.queryOrderByTime(map);
    }

    /**
     * 根据订单查询
     * @param map
     */
    @Override
    public void queryOrderByParam(Map<String, String> map) {
        BaseModel<List<JourneyBean>> model=new BaseModel<>();
        model.setListener(new SubscriberOnNextListener<List<JourneyBean>>() {
            @Override
            public void onNext(List<JourneyBean> queryParamBeen) {
                if(mView!=null) {
                    mView.queryOrderSuccess(queryParamBeen);
                }
            }
        }, new SubscriberOnErrorListener() {
            @Override
            public void onError(Throwable e) {
                if(mView!=null){
                    mView.requestFail(e,"请求数据失败");
                }
            }

            @Override
            public void onError() {

            }
        },mView.getActivity());
        model.getData(RetrofitHelp.getResponseCallBack().queryListByParam(map));
    }
}
